package Classes;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.io.StringReader;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.view.JasperViewer;

public class Relatorio {

    /* Primeira parte */
    private Connection con = null;
    private String driver = "oracle.jdbc.driver.OracleDriver";
    private String endereco = "enderecoBanco";
    private String user = "usuarioBanco";
    private String pass = "senhaBanco";
    private ResultSet rs = null;
    private String valores[] = new String[10];
    private int chamada = 1;
    private String dir = "local onde está o arquivo do relatorio";
    private StringReader stream;
    /*Segunda parte */

    public Relatorio() {
        /* Efetua a conexao a base de dados e coleta os valores da base de dados armazenando-os
        em um array para ser futuramente utilizado */
        try {
            if (con == null) {
                Class.forName(driver);
                con = (Connection) DriverManager.getConnection(endereco, user, pass);
                Statement statement = (Statement) con.createStatement();
                rs = statement.executeQuery("select a ser executado");
                HashMap teste = new HashMap();
                while (rs.next()) {
                    //for até o numero de campos da tabela
                    for (int i = 1; i < 10; i++) {
                        valores[i] = rs.getString(i);
                    }
                }
            }
        } catch (Exception e) {
            System.err.println("Problemas apresentados na operacao de conexao");
            e.printStackTrace();
        }
        /* Inicio do bloco que ira gerar nossos relatorios e 3ª parte */
        try {
            String array[] = valores;
            JasperDesign design = JasperManager.loadXmlDesign(dir + "NomeDoRelatorio.jrxml");
            JasperReport jr = JasperManager.compileReport(design);
            HashMap parameters = new HashMap();
            parameters.put("PARAMETRO_1", array[1]);
            parameters.put("PARAMETRO_2", array[2]);
            parameters.put("PARAMETRO_3", array[5]);
            parameters.put("PARAMETRO_4", array[4]);
            parameters.put("PARAMETRO_5", array[9]);
            JasperPrint impressao = JasperManager.fillReport(jr, parameters, con);
            JasperViewer jrviewer = new JasperViewer(impressao, false);
            jrviewer.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /* Aqui chamamos o construtor de nossa classe para exibirmos o relatorio e 4ª parte*/

    public static void main(String args[]) {
        new Relatorio();
        System.out.println("ok");
    }
}
